import java.util.ArrayList;
import java.util.List;

// 移除错误的静态导入（与业务无关）

public class Student extends Person {
    private final List<Course> selectedCourses; // 所选课程列表

    // 构造方法（调用父类构造器）
    public Student(String studentId, String name) {
        super(studentId, name);
        this.selectedCourses = new ArrayList<>();
    }

    // 选课
    public void selectCourse(Course course) {
        if (course != null && !selectedCourses.contains(course)) {
            selectedCourses.add(course);
            System.out.println(getName() + "成功选修课程: " + course.getCourseName());
        } else {
            System.out.println(getName() + "选修课程失败，课程不存在或已选");
        }
    }

    // 退课
    public void dropCourse(Course course) {
        if (course != null && selectedCourses.contains(course)) {
            selectedCourses.remove(course);
            System.out.println(getName() + "成功退选课程: " + course.getCourseName());
        } else {
            System.out.println(getName() + "退选课程失败，课程不存在或未选");
        }
    }

    // 打印课表（保留正确的实现，使用成员变量selectedCourses）
    public void printSchedule() {
        System.out.println("\n" + getName() + "的课表（学号: " + getId() + "）:");
        if (selectedCourses.isEmpty()) {
            System.out.println("未选任何课程");
            return;
        }

        System.out.println("------------------------------------------------");
        System.out.printf("%-10s %-15s %-10s %-15s %-10s%n",
                "课程编号", "课程名称", "地点", "时间", "教师");
        System.out.println("------------------------------------------------");

        for (Course course : selectedCourses) {
            // 修复教师为null的空指针问题
            String teacherName = course.getTeacher() != null ? course.getTeacher().getName() : "未安排教师";
            System.out.printf("%-10s %-15s %-10s %-15s %-10s%n",
                    course.getCourseId(),
                    course.getCourseName(),
                    course.getLocation(),
                    course.getTime(),
                    teacherName);
        }
        System.out.println("------------------------------------------------");
    }

    // 重写打印方法，关联课表信息
    @Override
    public void printInfo() {
        super.printInfo(); // 调用父类打印基础信息
        System.out.println("身份: 学生");
        printSchedule(); // 直接调用课表打印方法作为扩展信息
        System.out.println("----------------\n");
    }

    // 移除错误的私有方法（避免覆盖父类的getName()和getId()）
}